import request from '@/utils/request'

// GET    index              /admin/product/{page}/{limit}?category3Id={category3Id}
// GET    获取销售属性下拉    /admin/product/baseSaleAttrList
// POST   新增SPU            /admin/product/saveSpuInfo
// get    根据spu获取图片列表 /admin/product/spuImageList/{ spuId }
// get    根据spu获取销售属性 /admin/product/spuSaleAttrList/{ spuId }
// post   编辑保存接口        /admin/product/updateSpuInfo
// delete 删除spu             /admin/product/deleteSpu/{ spuId }

export interface SpuImageModel {
  id?: number, // 保存之后才会有的数据,用于回显获取数据
  spuId?: number, // 保存之后才会有的数据,用于回显获取数据
  imgName: string,
  imgUrl: string,
  // ---------------
  name?: string, // 收集数据使用,后端不要
  url?: string // 收集数据使用,后端不要
  response?: any // 收集数据使用,后端不要
}

export interface SpuSaleAttrValueModel {
  id?: number, // 保存之后才会有的数据,用于回显获取数据
  spuId?: number, // 保存之后才会有的数据,用于回显获取数据
  saleAttrName?: string, // 保存之后才会有的数据,用于回显获取数据
  isChecked?: null, // 保存之后才会有的数据,用于回显获取数据
  baseSaleAttrId: number,
  saleAttrValueName: string,
}
export interface SpuSaleAttrModel { // 收集到spu中的类型
  id?: number, // 保存之后才会有的数据,用于回显获取数据
  spuId?: number, // 保存之后才会有的数据,用于回显获取数据
  baseSaleAttrId: number,
  saleAttrName: string,
  spuSaleAttrValueList: SpuSaleAttrValueModel[],
  // -----------------------------
  inputVisible?: boolean // 用于控制表格中input的显示和隐藏
  inputValue?: string // 用于收集表格行中input框输入的内容
}

export interface SaleAttrModel { // 下拉的类型
  id: number,
  name: string
}
export interface SpuModel {
  id?: number,
  spuName: string | undefined,
  description: string,
  category3Id: number | undefined,
  tmId: number | undefined,
  spuSaleAttrList: SpuSaleAttrModel[],
  spuImageList: SpuImageModel[],
}

export interface SpuPageModel {
  records: SpuModel[],
  total: number,
  size: number,
  current: number,
  searchCount: boolean,
  pages: number,
}

export default {
  getPage(page: number, limit: number, category3Id: number) {
    return request.get<any, SpuPageModel>(`/admin/product/${page}/${limit}?category3Id=${category3Id}`)
  },
  // 获取销售属性下拉
  getBaseSaleAttrList() {
    return request.get<any, SaleAttrModel[]>(`/admin/product/baseSaleAttrList`)
  },
  // 保存SPU
  saveSpu(spu: SpuModel) {
    return request.post<any, null>(`/admin/product/saveSpuInfo`, spu)
  },
  // 根据spu获取图片列表
  getSpuImageListBySpuId(spuId: number) {
    return request.get<any, SpuImageModel[]>(`/admin/product/spuImageList/${ spuId }`)
  },
  // 根据spu获取销售属性
  getSpuSaleAttrListBySpuId(spuId: number) {
    return request.get<any, SpuSaleAttrModel[]>(`/admin/product/spuSaleAttrList/${ spuId }`)
  },
  // 编辑保存接口
  updateSpu(spuForm: SpuModel) {
    return request.post<any, null>(`/admin/product/updateSpuInfo`, spuForm)
  },
  // 删除spu
  deleteSpu(spuId: number) {
    return request.delete<any, null>(`/admin/product/deleteSpu/${ spuId }`)
  }
}